package com.example.demo11bufferedWriter;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 目标：完成出师表的案例。
 */
public class BufferedTest2 {
    public static void main(String[] args) {
        // 1.创建两个字符缓冲输入流和输出流
        try (
                BufferedReader br = new BufferedReader(new FileReader("day12-file-io\\src\\csb.txt"));
                BufferedWriter bw = new BufferedWriter(new FileWriter("day12-file-io\\src\\csb2.txt"))
        ) {
            // 2.提前准备一个List集合存储每段内容
            List<String> data = new ArrayList<>();

            // 3.按照行读取数据，存入到data集合中去
            String line;
            while ((line = br.readLine()) != null) {
                data.add(line);
            }

            // 4.给集合中的每段内容，按照首字符排序
            // 可以指定排序规则
//            data.sort(new Comparator<String>() {
//                @Override
//                public int compare(String o1, String o2) {
//                    return o1.charAt(0) - o2.charAt(0);
//                }
//            });

            // 使用Lambda简化
            // data.sort((o1, o2) -> o1.charAt(0) - o2.charAt(0));

            // 使用Collections工具类直接排序
            Collections.sort(data);
            System.out.println(data);

            // 5.遍历集合，将每段内容写入到目标文件中。
            for (String s : data) {
                bw.write(s);
                bw.newLine(); // 换行
            }
            System.out.println("处理完毕！");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
